﻿using System;
using System.Collections.Generic;

namespace LayeredArchitectureSample.DomainModel
{
    public interface IRouteRepository
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <exception cref="CannotRemoveEntityException"></exception>
        void RemoveRoute(long id);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="waypoints"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        /// <exception cref="CannotAddEntityException"></exception>
        Route AddNewRoute(IEnumerable<Location> waypoints);

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        /// <exception cref="EntityRetrievalException"></exception>
        IEnumerable<Route> GetAll();
    }
}